import java.util.Arrays;

/**
 * 这是 LeetCode 第 2274. 最大连续无特殊楼层的楼层数 的解决方案
 * https://leetcode.cn/problems/maximum-consecutive-floors-without-special-floors
 */
class MaximumConsecutiveFloorsWithoutSpecialFloors{
    /**
     * 方法： maxConsecutive
     * 逻辑: 计算在给定的楼层范围内，没有特殊楼层的最大连续楼层数。
     * Args:
     *   bottom (int): 楼层范围的下限。
     *   top (int): 楼层范围的上限。
     *   special (int[]): 特殊楼层的数组。
     * Returns:
     *   int: 最大连续没有特殊楼层的楼层数。
     * Time:  
     *   O(nlogn)，其中 n 是 special 数组的长度，因为排序操作的时间复杂度为 O(nlogn)。
     * Space:  
     *   O(1)，除了输入数组外，只使用了常数级的额外空间。
     */
    public int maxConsecutive(int bottom, int top, int[] special) {
        Arrays.sort(special);
        int ans = Math.max(special[0] - bottom, top - special[special.length - 1]);
        for(int i = 1; i < special.length; i++){
            ans = Math.max(ans, special[i] - special[i - 1] - 1);
        }
        return ans;
    }
}